import os

import pytest
from common.request import ApiRequest
from common.read_config import read_config
import sys
print("当前 sys.path:", sys.path)


# 从 testcases 目录，向上跳两级到项目根
project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0, project_root)

print("conftest.py 被加载了！")  # 加打印，确认 pytest 是否加载该文件


@pytest.fixture
def login_token():
    """
    登录令牌 fixture，用于获取并返回登录后的令牌，供测试用例使用。
    通过发送 POST 请求获取令牌，断言确保获取成功。
    """
    print("开始执行 login_token fixture...")

    # 1. 读取配置
    base_url = read_config(section='test', option='base_url')
    print(f"base_url: {base_url}")  # 使用 f-string 和正确的 print

    # 2. 发送登录请求
    api = ApiRequest(base_url)
    login_data = {"username": "代儒霞", "password": "dd111111"}
    response = api.post(url='/prod-api/auth/login', json=login_data)

    # 3. 打印完整响应（调试用）
    print(f"登录响应: {response.text}")

    # 4. 提取 token（修正变量名和路径）
    response_data = response.json()  # 正确定义变量
    token = response_data.get('data', {}).get('token')  # 从 data.token 提取

    # 5. 断言和返回
    assert token, f"登录失败，token 为空。完整响应: {response.text}"
    print(f"获取到 token: {token}")
    return token
def pytest_addoption(parser):
    # 注册 --env 参数，让 pytest 识别
    parser.addoption(
        "--env",
        action="store",
        default="test",  # 默认环境
        choices=["test", "prod"],  # 允许的环境值
        help="指定测试环境（test/prod）"
    )